In a computer or microcomputer an operand, such as an address or datum, may be signed or unsigned. A signed number is typically understood to be one in which the bit which would ordinarily be the most significant bit (MSB) is used to indicate if the number is positive or negative. A one indicates the number is negative and a zero indicates that the number is positive. A signed number is a number which can be described as having a numeric value which can be either positive or negative. An unsigned number is one in which the MSB is in fact used for the purpose of being the most significant bit. An unsigned number is always thought of as being positive. An unsigned number is described as having a logic value. If asked the numeric value of a binary number of ones and zeros, the answer will assume that the bit in the MSB location determines the sign. If, on the other hand, asked the logic value of a binary number, the answer will include the MSB in determining the magnitude.
In a microcomputer, operands typically share the same bus. Operands, as stated previously, may be signed or unsigned. An instruction which the microcomputer is typically expected to perform is a determination as to whether or not an operand or address is within bounds. Because the bus will have both signed and unsigned numbers, the microcomputer must be able to do a boundary check on both signed and unsigned numbers. Because the MSB may indicate either sign or magnitude, a boundary with an MSB of one may be either positive or negative. Consequently, a boundary check has always also required information as to whether the number to be checked was signed or unsigned.
The additional requirement of indicating whether the number to be boundary checked is signed or unsigned, increases program complexity.